/**
 * 
 */
package com.blumov.fastbox.infrastructure.persistence.largequery;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.transform.ResultTransformer;

/**
 * @author epidata
 * 
 */
public class LargeQueryBuilderImpl implements LargeQueryBuilder {

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.epidataconsulting.vonderheide.vdh.persistencia.queryobject.LargeQueryBuilder#buildWith
	 * (org.hibernate.Criteria)
	 */
	@SuppressWarnings("unchecked")
	public <T> LargeQuery<T> buildWith(Criteria aCriteria) {
		return new CriteriaWrapper(aCriteria);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @seecom.epidataconsulting.vonderheide.vdh.persistencia.largequery.LargeQueryBuilder#
	 * buildWithACriteriaForProjections(org.hibernate.Criteria)
	 */
	@SuppressWarnings("unchecked")
	public <T> LargeQuery<T> buildWith(Criteria aCriteria, ProjectionList projections, ResultTransformer transformer) {
		return new CriteriaForProjectionsWrapper(aCriteria, projections, transformer);
	}

	@SuppressWarnings("unchecked")
	public <T> LargeQuery<T> buildWith(Query query) {
		return null;
	}
}
